package com.chinawayltd.ews.sample.service.order;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.chinawayltd.ews.sample.model.TOrderDetail;
import com.chinawayltd.ews.sample.model.order.InterfaceVO;
import com.chinawayltd.ews.sample.model.order.OrderDetailVO;
import com.chinawayltd.ews.sample.model.order.OrderVO;
import com.chinawayltd.ews.sample.util.PageData;
import com.chinawayltd.ews.sample.util.excel.ExcelObjModel;
import com.chinawayltd.ews.sample.web.query.InterfaceGirdQuery;
import com.chinawayltd.ews.sample.web.query.OrderDetailGirdQuery;
import com.chinawayltd.ews.sample.web.query.OrderGirdQuery;

/**
 * @program: greeProject
 * @description 物料订单信息管理service
 * @author: chenxin
 * @create: 2018年4月16日 下午5:12:50
 */
public interface OrderService {

    /**
     * 根据查询条件与分页信息查询物料订单数据
     * @param queryParam
     * @return
     */
    List<OrderVO> listOrderByPage(OrderGirdQuery queryParam);
    /**
     * 根据查询条件与分页信息查询异常物料订单数据
     * @param queryParam
     * @return
     */
	List<OrderVO> listAbnormalOrderByPage(OrderGirdQuery queryParam);
	
    /**
     * 根据id查出对应的物料订单信息
     * @param id
     * @return
     */
	OrderVO getOrderById(Long id) throws Exception;

    /**
     * 新增物料订单信息
     * @param tOrder
     * @return
     */
    void insertOrder(OrderVO orderVO)  throws Exception ;

    /**
     * 修改物料订单信息
     * @param tOrder
     * @return
     */
    void updateOrder(OrderVO orderVO) throws Exception;

    /**
     * 删除物料订单信息
     * @param id
     * @return
     */
    int deleteOrderById(Long id);
    
    /**
     * 通过订单查新物料明细
     * @author: chenxin
     * @date: 2018年4月17日
     * @param orderId
     * @return
     */
    List<OrderDetailVO> listOrderDetailByOrderId(Long orderId) throws Exception;
    /**
     * 明细分页
     * @author: chenxin
     * @date: 2018年6月30日 下午4:15:33
     * @param queryParam
     * @return
     * @throws Exception
     */
    List<OrderDetailVO> listOrderDetailByPage(OrderDetailGirdQuery queryParam) throws Exception;
    /**
     * 根据订单id查询订单信息
     * @author: chenxin
     * @date: 2018年4月17日
     * @param id
     * @return
     */
    OrderVO listOrderByOrderId(Long id);
    /**
     * 根据订单id或者订单号查询订单信息
     * @author: chenxin
     * @date: 2018年4月17日
     * @param id
     * @return
     */
	List<OrderVO> listOrderByOrderIdOrOrderNo(Long orderId, String orderNo);
	/**
	 * 根据任务id查询订单信息
	 * @author: chenxin
	 * @date: 2018年4月27日
	 * @param taskId
	 * @return
	 */
	List<OrderVO> listOrderByTaskId(Long taskId);
	
	/**
     * 通过订单id或者订单号查新物料明细
     * @author: chenxin
     * @date: 2018年4月17日
     * @param orderId
     * @return
     */
	List<OrderDetailVO> listOrderDetailByOrderIdOrOrderNo(Long orderId, String orderNo);
	/**
	 * 修改订单明细
	 * @author: chenxin
	 * @date: 2018年5月8日 下午3:57:23
	 * @param od
	 * @return
	 */
	int updateOrderDetail(TOrderDetail od);
	
	/**
	 * 修改任务关联的的所有订单的执行状态
	 * @author: chenxin
	 * @date: 2018年5月15日 下午5:41:35
	 * @param i
	 * @param taskId
	 * @param date
	 * @return
	 */
	int updateOrderExecutStateByTaskId(int i, Long taskId, Date date) throws Exception;
	
	/**
	 * 修改当前运输任务所关联的订单的生成状态
	 * @param taskId
	 */
	void updateOrderGenerateStatus(int i, Long taskId, Date date) throws Exception;
    
	/**导出物料订单
	 * @author Fay
	 * @date 2018年5月24日 上午10:25:40
	 * @param queryParam
	 * @return
	 */
	List<Map<String, Object>> exportGirdData(OrderGirdQuery queryParam);
	
	/**异常物料订单信息导出
	 * @author Fay
	 * @date 2018年5月24日 上午10:52:56
	 * @param queryParam
	 * @return
	 */
	List<Map<String, Object>> abnormalExportGirdData(OrderGirdQuery queryParam);
	
	/**导入物料订单信息
	 * @author Fay
	 * @date 2018年5月7日 下午4:30:56
	 * @param list
	 * @return
	 */
	ExcelObjModel insertList(List<PageData> list);
	ExcelObjModel insertList2(List<PageData> list);
	/**
	 * 根据材料id查询订单明细
	 * @author: chenxin
	 * @date: 2018年5月28日 下午5:17:14
	 * @param id
	 * @return
	 */
	List<TOrderDetail> listOrderDetailByMaterielId(Long id) throws Exception;
	/**
	 * 根据ids查询订单
	 * @author: chenxin
	 * @date: 2018年7月2日 下午11:37:38
	 * @param ids
	 * @return
	 */
	List<OrderVO> listOrderByOrderIds(String[] ids);
	/**
	 * 查询调度日记
	 * @author: chenxin
	 * @date: 2018年7月10日 上午10:35:47
	 * @param queryParam
	 * @return
	 */
	List<InterfaceVO> dispatchLoadGirdData(InterfaceGirdQuery queryParam);
	
}
